package com.hd.sup.modules.vehicle.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hd.sup.modules.vehicle.model.VehicleAlarmDailyStatis;
import com.hd.sup.modules.vehicle.model.VehicleDailyStatis;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author chentl123
 * @since 2020-12-28
 */
public interface IVehicleDailyStatisService extends IService<VehicleDailyStatis> {

    /**
     * @return java.util.List<com.hd.sup.modules.vehicle.model.VehicleDailyStatis>
     * @author chentl
     * @description 获取当天车辆类型数量统计数据
     * @date 2020/12/28 2:43 下午
     * @params [param, deptIds]
     */
    List<VehicleDailyStatis> getDailyVehicleNumData(VehicleDailyStatis param, List<String> deptIds);

    /**
     * @return com.hd.sup.modules.vehicle.model.VehicleDailyStatis
     * @author chentl
     * @description 根据当前日期获取当天所有车辆维度统计信息
     * @date 2020/12/28 3:47 下午
     * @params [currentDateStr, deptIds]
     */
    VehicleDailyStatis getDailyVehicleSumData(String currentDateStr, List<String> deptIds);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 获取车辆上线趋势数据
     * @date 2020/12/29 9:45 上午
     * @params [dateRange, startDateStr, endDateStr,transType,deptIds]
     */
    List<Map<String, Object>> getGoOnlineTrendData(String dateRange, String startDateStr, String endDateStr, String transType, List<String> deptIds);


    /**
     * @return void
     * @author chentl
     * @description 根据类型统计车辆数据
     * @date 2020/12/28 3:39 下午
     * @params [resultMap, list,deptIds]
     */
    void fillVehicleByTransType(Map<String, Object> resultMap, List<VehicleDailyStatis> list, List<String> deptIds);

    /**
     * @return void
     * @author chentl
     * @description 根据类型统计车辆数据（处理空结果）
     * @date 2021/3/10 9:19 上午
     * @params [resultMap,  deptIds]
     */
    void fillVehicleByTransTypeForEmpty(Map<String, Object> resultMap, List<String> deptIds);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询报警企业车辆数TOP5
     * @date 2020/12/29 3:29 下午
     * @params [deptIds]
     */
    List<Map<String, Object>> getVehicleTop5(List<String> deptIds);

    /**
     * @return java.util.List<com.hd.sup.modules.vehicle.model.VehicleDailyStatis>
     * @author chentl
     * @description 获取当天统计数据
     * @date 2021/1/11 1:46 下午
     * @params [currentDate]
     */
    List<VehicleDailyStatis> getTodayStatisData(String currentDate);

    /**
     * @return void
     * @author chentl
     * @description 根据 vehicle_type + enterprise_no + statis_date 更新或插入车辆统计数据
     * @date 2021/1/11 1:52 下午
     * @params [vehicleDailyStatis]
     */
    void refreshVehicleDailyStatis(VehicleDailyStatis vehicleDailyStatis);
}
